
    <!DOCTYPE html>
    <html lang="en">

    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>

    <body>
        <script>
        // 解决传址问题 
        // 数组 对象
        // var arr1 = [1,2,3,4];
        // // var arr2 = arr;
        // var arr2 = [];
        // // for(var i=0;i<arr1.length;i++){
        // //     arr2.push(arr1[i]);
        // // }
        // for(var key in arr1){
        //     arr2[key] = arr1[key];
        // }

        // console.log(arr2);
        
        // arr2[1] = 6;
        // console.log(arr1);
        // console.log(arr2);

        // var obj = {
        //     name:"张三",
        //     age:20
        // }

        // var obj2 = {}

        // for(var key in obj){
        //     obj2[key] = obj[key];
        // }
       
        // obj2.age = 30;
        // console.log(obj);
        // console.log(obj2);



        // 封装一个函数 实现拷贝 数组 或者是对象
        // 拷贝一层

        // function copy(arg){
        //     // 生成一个空的对象或者数组 根据传递过来的obj的类型来生成；
        //     var res = Array.isArray(arg)?[]:{};
        //     // console.log(res);
        //     for(var key in arg){
        //         res[key] = arg[key];
        //     }
        //     // console.log(res);
        //     return res;
        // }
        // // var arr = [1,2,3];
        // // var newarr = copy(arr);
        // // var newarr = arr;
        // // newarr[1] = 6;
        // // console.log(arr);
        // // console.log(newarr);


        // var obj = {
        //     name:"张三",
        //     myhobby:{
        //         a:"篮球",
        //         b:"足球"
        //     }
        // };
        // var obj2 = copy(obj);
        // // obj2.name = "李四";
        // obj2.myhobby.a = "高尔夫";
        // console.log(obj);
        // console.log(obj2);
        // copy(obj);

    //     var arr = [];
    //     var obj = {};
    //     // console.log(typeof arr);
    //     // console.log(typeof obj);
    //    console.log( Array.isArray(obj));

    // 拷贝函数 ----》深拷贝
    /*
    var obj = {
            name:"张三",
            age:20,
            myhobby:{
                a:"篮球",
                b:"足球",
                obj:{
                    obj:{

                    }
                }
            }
        };
    */

    function deepCopy(arg){
            // 生成一个空的对象或者数组 根据传递过来的obj的类型来生成；
            var res = Array.isArray(arg)?[]:{};
            // console.log(res);
            for(var key in arg){
                if(typeof arg[key] === "object"){  // 张三  20  {a:"篮球",b:"足球"};
                    res[key] = deepCopy(arg[key]);
                }else{
                    res[key] = arg[key];
                }
            }
            // console.log(res);
            return res;
        }

         var obj = {
            name:"张三",
            myhobby:{
                a:"篮球",
                b:"足球"
            },
            arr:[1,2,3,4]
        };

        // var obj2 = obj;
        // var obj2 = {
        //     name:"张三",
        //     myhobby:{
        //         a:"篮球",
        //         b:"足球"
        //     },
        //     arr:[1,2,3,4]
        // };


        var obj2 = deepCopy(obj);
        obj2.myhobby.a = "高尔夫";
        console.log(obj);
        console.log(obj2);

        // 递归深拷贝 
        </script>
    </body>

    </html>
